#include "app_common.h"
#include "log.h"
#include "sys/time.h"
#include <stdlib.h>
#include <string.h>

long app_common_getsystime()
{
    struct timeval tv;
    gettimeofday(&tv,NULL);

    return (tv.tv_sec * 1000 + tv.tv_usec / 1000);
}

/**
 * @brief 字节数组(不需要\0结尾)转16进制字符串(需要\0结尾)
 */
char *app_common_str2hex(char *bytes,int len){
    char *hexstr = malloc(len*2+1);
    for (size_t i = 0; i < len; i++)
    {
        //例如:bytes[0]=0x01 以%x格式写入到hexstr中，因此会写两个字符，下次在写就是从i*2的位置开始
        sprintf(hexstr+i*2,"%02x",bytes[i]);
    }
    hexstr[len*2] = '\0';
    return hexstr;
}

/**
 * @brief 16进制字符串转字节数组
 */
int app_common_hex2str(char *hexstr,char *bytes,int len){
    for (size_t i = 0; i < strlen(hexstr); i+=2)
    {
        //     从这里开始 读取两位 放入他这里
        sscanf(hexstr+i,"%2hhx",bytes+i/2);
    }
    return strlen(hexstr)/2;
}